import redis
from django.http import HttpResponse, JsonResponse
from django.shortcuts import render

# Create your views here.
from django.views import View

from libs.pythonsmssdk.ronglian_sms_sdk import SmsSDK

accId = '8a216da877bef0fe0177c290dea1006e'
accToken = '6a68e7e52af94f6b95a8cde0e393331a'
appId = '8a216da877bef0fe0177c290dfb70075'



class ImageCodeView(View):
    def get(self,request,uuid):
        from libs.captcha.captcha import captcha
        text,image=captcha.generate_captcha()

        from django_redis import get_redis_connection
        redis_cli=get_redis_connection('code')
        redis_cli.setex(uuid,300,text)
        #content_type='image/png','image/jpeg','image/gif'
        return HttpResponse(image,content_type='image/jpeg')

"""
1.注册
我们提供免费开发测试，【免费开发测试前，请先 注册 成为平台用户】。

2.绑定测试号
免费开发测试需要在"控制台—管理—号码管理—测试号码"绑定 测试号码 。
3.开发测试
开发测试过程请参考 短信业务接口 及 Demo示例 / sdk参考（新版）示例。Java环境安装请参考"新版sdk"。

4.免费开发测试注意事项
    4.1.免费开发测试需要使用到"控制台首页"，开发者主账户相关信息，如主账号、应用ID等。

    4.2.免费开发测试使用的模板ID为1，具体内容：【云通讯】您的验证码是{1}，请于{2}分钟内正确输入。其中{1}和{2}为短信模板参数。

    4.3.测试成功后，即可申请短信模板并 正式使用 。
"""

class SmsCodeView(View):
    def get(self,request,mobile):
        image_code = request.GET.get('image_code')
        uuid = request.GET.get("image_code_id")
        if not all([image_code,uuid]):
            return JsonResponse({'code':400,'errmsg':'err'})

        from django_redis import get_redis_connection
        redis_cli=get_redis_connection('code')
        redis_image_code=redis_cli.get(uuid)
        if redis_image_code is None:
            return JsonResponse({'code':400,'errmsg':'timeout'})
        if redis_image_code.decode().lower()!=image_code.lower():
            return JsonResponse({'code':400,'errmsg':'picture is err'})
        send_flag=redis_cli.get('send_flag_%s'%mobile)
        if send_flag is not None:
            return JsonResponse({'code':400,'errmsg':'tai ping fan'})
        from random import  randint
        sms_code='%06d'%randint(0,999999)

        pipeline=redis_cli.pipeline()
        pipeline.setex(mobile, 300, sms_code)
        pipeline.setex('send_flag_%s'%mobile,300,1)
        pipeline.execute()

        # redis_cli.setex(mobile,300,sms_code)
        # redis_cli.setex('send_flag_%s'%mobile,300,1)
        # send_message.sdk.sendMessage(1,mobile,(sms_code,5))
        # CCP().send_template_sms(mobile,[sms_code,5],1)
        # sdk = SmsSDK(accId, accToken, appId)
        # resp = sdk.sendMessage('1', mobile, (sms_code,5))
        from celery_tasks.sms.tasks import send_message
        send_message.delay(mobile,sms_code)
        return  JsonResponse({'code':0,'errmsg':'ok'})